// package com.thrk.robot.assistant.job;
//
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.data.redis.core.RedisCallback;
// import org.springframework.data.redis.core.RedisTemplate;
// import org.springframework.stereotype.Service;
//
// @Service
// public class PermissionService {
//
//     @Autowired
//     private RedisTemplate<String, Object> redisTemplate;
//
//     // 设置用户权限
//     public void setPermission(String userKey, int permissionIndex) {
//         redisTemplate.opsForValue().setBit(userKey, permissionIndex, true);
//     }
//
//     // 获取用户权限
//     public boolean hasPermission(String userKey, int permissionIndex) {
//         return redisTemplate.opsForValue().getBit(userKey, permissionIndex);
//     }
//
//     // 执行 AND 操作
//     public void andPermissions(String destKey, String key1, String key2) {
//         redisTemplate.execute((RedisCallback<Object>) (connection) -> connection.bitOp(org.springframework.data.redis.connection.BitOperation.AND, destKey.getBytes(), key1.getBytes(), key2.getBytes()));
//     }
//
//     // 执行 OR 操作
//     public void orPermissions(String destKey, String key1, String key2) {
//         redisTemplate.execute((connection) -> connection.bitOp(org.springframework.data.redis.connection.BitOperation.OR, destKey.getBytes(), key1.getBytes(), key2.getBytes()));
//     }
//
//     // 执行 XOR 操作
//     public void xorPermissions(String destKey, String key1, String key2) {
//         redisTemplate.execute((connection) -> connection.bitOp(org.springframework.data.redis.connection.BitOperation.XOR, destKey.getBytes(), key1.getBytes(), key2.getBytes()));
//     }
//
//     // 执行 NOT 操作
//     public void notPermissions(String destKey, String key) {
//         redisTemplate.execute((connection) -> connection.bitOp(org.springframework.data.redis.connection.BitOperation.NOT, destKey.getBytes(), key.getBytes()));
//     }
//
//     // 统计权限数量
//     public long countPermissions(String key) {
//         return redisTemplate.execute((connection) -> connection.bitCount(key.getBytes()));
//     }
// }
